Amazon Redshift: 実行クエリ&COPY処理が管理コンソールからTerminate出来るようになりました
本日(2014/10/29:米国時間では2014/10/28)告知されたリリースノートにて、管理コンソールから実行中のクエリ及びロード処理のterminater(終了)処理が行えるようになりました。当エントリではその内容についてご紹介したいと思います。
Redshift on 2014-10-28:Redshift introduces the ability to termin.. http://t.co/y8n0dDcWNV #awsuguk #aws #jawsug
— AWSUpdate (@AWSUpdate) 2014, 10月 29
これまでの対応方法
これまでは、処理に時間が掛かっているSQLクエリやテーブルへのロード処理に関してその処理を一旦終了させたいとなった場合、以下のような手順を踏まなければいけませんでした。
- 管理コンソールで該当処理のクエリIDを特定
- Redshiftクラスタにログイン
- クエリIDに対してキャンセル処理を実施(例:クエリIDが123456の場合、CANCEL 123456;と言った具合に)
それが、今回の改善によって1アクションで済む形になります。
- 管理コンソールで該当処理のクエリIDを特定し、選択後所定の処理を終了させるボタンを押下
動作検証
では、実際にどのようなオペレーションになるか試してみましょう。以下に1億8千万件データが入っているテーブルを用意しました。あんまやらないとは思いますが、そのテーブルに対してSELECT * FROMで検索を掛けてみます。Redshiftと言えども流石にこれでは時間掛かってしまいますね。実際結構な時間が掛かってしまっております。
# SELECT COUNT(*) FROM test_table; count ----------- 181706752 (1 row) # \timing Timing is on. # SELECT * FROM test_table; (結果は暫く返って来ない...)
上記クエリが実行されている状態で、管理コンソールにアクセスしてみます。クラスタの[Queries]タブの内容を見てみると、確かに時間掛かってますね。[Terminate Query]ボタンが新設されていますので、該当のクエリを選択後、ボタンを押下してみます。
実行を取り止めるかどうか聞いて来るので、[Confirm]を選択。
すると、程無くしてクエリがTerminateされました!
上記[Queries]タブ同様、[Loads]タブにもボタンが新設されていました。同様のオペレーションでテーブルへのロード処理を取り止めたい場合に使えそうです。
まとめ
以上、クエリ及びデータロードに関するTerminate処理についてのオペレーション改善ネタでした。この操作が出来るようになった事により、管理コンソールだけで状況の回復が行えるようになったのでわざわざpsql等でクラスタにアクセスする必要が無くなった(関連するユーザー情報を連携する必要が無くなった)という点が大きいと思います。管理コンソールを確認・及び当該操作が行えるようなIAM権限等を有していれば、お客様自身で管理コンソールから対応するという事も可能となるかと思います。今後も管理コンソールの充実に期待したいところですね。こちらからは以上です。
追記:
管理コンソールからの利用に伴うIAM権限の設定については、@con_mameさんの以下エントリに詳細が展開されていますので、是非ご参考ください。